﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.PRESENTACION.Personas.Cliente;
using Cotizav.PRESENTACION.Personas.Vendedor;
using Cotizav.PRESENTACION.Equipo;
using Cotizav.PRESENTACION.Cotizacion;
using Cotizav.CONEXION;
using Cotizav.PRESENTACION.CartaCompromiso;

namespace Cotizav.PRESENTACION.Base
{
    public partial class IURegistro : UserControl
    {

        string columnFiltered;

        public string ColumnFiltered
        {
            get { return columnFiltered; }
            set { columnFiltered = value; }
        }

        public IURegistro()
        {
            InitializeComponent();
            string columnFiltered = string.Empty;
        }

        internal bool isObjectSelectedinGrid()
        {
            if (gridListObjetos.SelectedRows.Count > 0)
                return true;
            else
                return false;
        }

        internal void DisabledGridListObjetos()
        {
            gridListObjetos.Enabled = false;
            gridListObjetos.ForeColor = Color.LightGray;            
        }

        internal void EnabledGridListObjetos()
        {
            gridListObjetos.Enabled = true;
            gridListObjetos.ForeColor = Color.FromArgb(255, 0, 0, 0);
        }

        private void gridListObjetos_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (gridListObjetos.SelectedRows.Count > 0)
            {
                //verifico el nombre del form Padre
                Form formActivo = this.ParentForm;

                //vemos que form activo es
                if (formActivo is RegistroCliente)
                {
                    //obtenemos el UC, por defecto es el unico control
                    IURegistroCliente iuregCliente = splitContainer1.Panel2.Controls[0] as IURegistroCliente;

                    if (iuregCliente != null)
                    {
                        //enviamos la informacion al UC
                        string idCliente = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iuregCliente.mostrarCliente(idCliente);
                    }
                }
                if (formActivo is RegistroVendedor)
                {
                    IURegistroVendedor iuregVendedor = splitContainer1.Panel2.Controls[0] as IURegistroVendedor;

                    if (iuregVendedor != null)
                    {
                        string idVendedor = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iuregVendedor.mostrarVendedor(idVendedor);
                    }
                }
                if (formActivo is RegistroEquipo)
                {
                    IURegistroEquipo iuregEquipo = splitContainer1.Panel2.Controls[0] as IURegistroEquipo;

                    if (iuregEquipo != null)
                    {
                        string idEquipo = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iuregEquipo.mostrarEquipo(idEquipo);
                    }
                }
                if (formActivo is PanelCotizacion)
                {
                    IUCotizacion iucotizacion = splitContainer1.Panel2.Controls[0] as IUCotizacion;

                    if (iucotizacion != null)
                    {
                        string idCotizacion = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iucotizacion.mostrarCotizacion(idCotizacion);
                    }
                }
                if (formActivo is PanelCartaCompromiso)
                {
                    IUCartaCompromiso iucartacompromiso = splitContainer1.Panel2.Controls[0] as IUCartaCompromiso;

                    if (iucartacompromiso != null)
                    {
                        string idCartaCompromiso = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iucartacompromiso.mostrarCartaCompromiso(idCartaCompromiso);
                    }
                }
            }
        }

        private void gridListObjetos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridListObjetos.DataSource != null)
            {
                Form formActivo = this.ParentForm;

                if (formActivo is RegistroCliente)
                {
                    gridListObjetos.Columns["idCliente"].Visible = false;
                    gridListObjetos.Columns["direccion"].Visible = false;
                    gridListObjetos.Columns["provincia"].Visible = false;
                    gridListObjetos.Columns["email"].Visible = false;
                    gridListObjetos.Columns["razonSocial"].HeaderText = "Cliente";
                    gridListObjetos.Columns["razonSocial"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                    gridListObjetos.Columns["idcategoria"].Visible = false;
                    gridListObjetos.Columns["idsector"].Visible = false;
                    gridListObjetos.Columns["idDistrito"].Visible = false;
                    gridListObjetos.Columns["idSucursal"].Visible = false;
                    gridListObjetos.Columns["clienteruc"].Visible = false;
                    gridListObjetos.Columns["telefono"].Visible = false;
                    gridListObjetos.Columns["eliminado"].Visible = false;
                    gridListObjetos.Columns["idVendedor"].Visible = false;
                    gridListObjetos.Columns["fechaRegistro"].Visible = false;
                    gridListObjetos.Columns["fechaModificacion"].Visible = false;
                    gridListObjetos.Columns["registradoPor"].Visible = false;
                    gridListObjetos.Columns["CATEGORIA"].Visible = false;
                    gridListObjetos.Columns["SECTOR"].Visible = false;
                    gridListObjetos.Columns["VENDEDOR"].Visible = false;
                    gridListObjetos.Columns["DISTRITO"].Visible = false;
                    //gridListObjetos.Columns["CONTACTO"].Visible = false;

                    //txtBuscarContains.AutoCompleteList
                }

                if (formActivo is RegistroVendedor)
                {
                    gridListObjetos.Columns["idVendedor"].Visible = false;
                    gridListObjetos.Columns["nombre"].HeaderText = "Vendedor";
                    gridListObjetos.Columns["nombre"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                    gridListObjetos.Columns["codigoEmpleado"].Visible = false;
                    gridListObjetos.Columns["telefono"].Visible = false;
                    gridListObjetos.Columns["anexo"].Visible = false;
                    gridListObjetos.Columns["celular"].Visible = false;
                    gridListObjetos.Columns["nextel"].Visible = false;
                    gridListObjetos.Columns["fax"].Visible = false;
                    gridListObjetos.Columns["rpc"].Visible = false;
                    gridListObjetos.Columns["rpm"].Visible = false;
                    gridListObjetos.Columns["email"].Visible = false;
                    gridListObjetos.Columns["idCargo"].Visible = false;
                    gridListObjetos.Columns["eliminado"].Visible = false;
                    gridListObjetos.Columns["fechaRegistro"].Visible = false;
                    gridListObjetos.Columns["fechaModificacion"].Visible = false;
                    gridListObjetos.Columns["CARGO"].Visible = false;
                }

                if (formActivo is RegistroEquipo)
                {
                    gridListObjetos.Columns["idEquipo"].Visible = false;
                    gridListObjetos.Columns["nombreEquipo"].HeaderText = "Equipo";
                    gridListObjetos.Columns["nombreEquipo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                    gridListObjetos.Columns["codigo"].Visible = false;
                    gridListObjetos.Columns["serie"].Visible = false;
                    gridListObjetos.Columns["año"].Visible = false;
                    gridListObjetos.Columns["cantidad"].Visible = false;
                    gridListObjetos.Columns["horas"].Visible = false;
                    gridListObjetos.Columns["esalquiler"].Visible = false;
                    gridListObjetos.Columns["esventa"].Visible = false;
                    gridListObjetos.Columns["valorVenta"].Visible = false;
                    gridListObjetos.Columns["idSucursal"].Visible = false;
                    gridListObjetos.Columns["idlistaTarifa"].Visible = false;
                    gridListObjetos.Columns["idModelo"].Visible = false;
                    gridListObjetos.Columns["eliminado"].Visible = false;
                    gridListObjetos.Columns["marca"].Visible = false;
                    gridListObjetos.Columns["fechaRegistro"].Visible = false;
                    gridListObjetos.Columns["fechaModificacion"].Visible = false;
                    gridListObjetos.Columns["MODELO"].Visible = false;
                    gridListObjetos.Columns["SUCURSAL"].Visible = false;
                }

                if (formActivo is PanelCotizacion)
                {
                    gridListObjetos.Columns["idCotizacion"].Visible = false;
                    gridListObjetos.Columns["codigoCotizacion"].HeaderText = "Código";
                    gridListObjetos.Columns["codigoCotizacion"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                    gridListObjetos.Columns["fechaRegistro"].Visible = false;
                    gridListObjetos.Columns["numeroCotizacion"].Visible = false;
                    gridListObjetos.Columns["obra"].Visible = false;
                    gridListObjetos.Columns["referencia"].Visible = false;
                    gridListObjetos.Columns["tipoCambio"].Visible = false;
                    gridListObjetos.Columns["moneda"].Visible = false;
                    gridListObjetos.Columns["igv"].Visible = false;
                    gridListObjetos.Columns["idCliente"].Visible = false;
                    gridListObjetos.Columns["eliminado"].Visible = false;                    
                    gridListObjetos.Columns["nombreCliente"].HeaderText = "Cliente";
                    gridListObjetos.Columns["nombreCliente"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                    gridListObjetos.Columns["idVendedor"].Visible = false;
                    gridListObjetos.Columns["nombreVendedor"].Visible = false;
                    gridListObjetos.Columns["idsucursal"].Visible = false;
                    gridListObjetos.Columns["nombresucursal"].Visible = false;
                    gridListObjetos.Columns["esAlquiler"].Visible = false;
                    gridListObjetos.Columns["esVenta"].Visible = false;
                    gridListObjetos.Columns["subTotal"].Visible = false;
                    gridListObjetos.Columns["subTotalExt"].Visible = false;
                    gridListObjetos.Columns["subTotalLoc"].Visible = false;
                    gridListObjetos.Columns["dscto"].Visible = false;
                    gridListObjetos.Columns["dsctoLoc"].Visible = false;
                    gridListObjetos.Columns["dsctoExt"].Visible = false;
                    gridListObjetos.Columns["total"].Visible = false;
                    gridListObjetos.Columns["totalExt"].Visible = false;
                    gridListObjetos.Columns["totalLoc"].Visible = false;
                    gridListObjetos.Columns["CLIENTE"].Visible = false;
                }

                if (formActivo is PanelCartaCompromiso)
                {
                    gridListObjetos.Columns["idCartaCompromiso"].Visible = false;
                    gridListObjetos.Columns["despedida"].Visible = false;
                    gridListObjetos.Columns["fechaCartaCompromiso"].Visible = false;
                    gridListObjetos.Columns["numeroCarta"].HeaderText = "N° de Carta";
                    gridListObjetos.Columns["numeroCarta"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                    gridListObjetos.Columns["referencia1"].Visible = false;
                    gridListObjetos.Columns["referencia2"].Visible = false;
                    gridListObjetos.Columns["idsucursal"].Visible = false;
                    gridListObjetos.Columns["idcliente"].Visible = false;
                    gridListObjetos.Columns["nombrecliente"].HeaderText = "Cliente";
                    gridListObjetos.Columns["nombrecliente"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                    gridListObjetos.Columns["idVendedor"].Visible = false;
                    gridListObjetos.Columns["nombreVendedor"].Visible = false;
                    gridListObjetos.Columns["fechamodificacion"].Visible = false;
                    gridListObjetos.Columns["CLIENTE"].Visible = false;
                    gridListObjetos.Columns["SUCURSAL"].Visible = false;
                }
                               
            }
        }

        private void gridListObjetos_SelectionChanged(object sender, EventArgs e)
        {
            if (gridListObjetos.SelectedRows.Count > 0)
            {
                //verifico el nombre del form Padre
                Form formActivo = this.ParentForm;

                //vemos que form activo es
                if (formActivo is RegistroCliente)
                {
                    //obtenemos el UC, por defecto es el unico control
                    IURegistroCliente iuregCliente = splitContainer1.Panel2.Controls[0] as IURegistroCliente;

                    if (iuregCliente != null)
                    {
                        //enviamos la informacion al UC
                        string idCliente = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iuregCliente.mostrarCliente(idCliente);
                    }
                }
                if (formActivo is RegistroVendedor)
                {
                    IURegistroVendedor iuregVendedor = splitContainer1.Panel2.Controls[0] as IURegistroVendedor;

                    if (iuregVendedor != null)
                    {
                        string idVendedor = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iuregVendedor.mostrarVendedor(idVendedor);
                    }
                }
                if (formActivo is RegistroEquipo)
                {
                    IURegistroEquipo iuregEquipo = splitContainer1.Panel2.Controls[0] as IURegistroEquipo;

                    if (iuregEquipo != null)
                    {
                        string idEquipo = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iuregEquipo.mostrarEquipo(idEquipo);
                    }
                }
                if (formActivo is PanelCotizacion)
                {
                    IUCotizacion iucotizacion = splitContainer1.Panel2.Controls[0] as IUCotizacion;

                    if (iucotizacion != null)
                    {
                        string idCotizacion = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iucotizacion.mostrarCotizacion(idCotizacion);
                    }
                }
                if (formActivo is PanelCartaCompromiso)
                {
                    IUCartaCompromiso iucartacompromiso = splitContainer1.Panel2.Controls[0] as IUCartaCompromiso;

                    if (iucartacompromiso != null)
                    {
                        string idCartaCompromiso = gridListObjetos.SelectedRows[0].Cells[0].Value.ToString();
                        iucartacompromiso.mostrarCartaCompromiso(idCartaCompromiso);
                    }
                }
            }
        }

        //private void txtBuscar_TextChanged(object sender, EventArgs e)
        //{
        //    if (gridListObjetos.Rows.Count > 0)
        //    {
        //        if (!string.IsNullOrWhiteSpace(txtBuscar.Text))
        //        {
        //            Form formActivo = this.ParentForm;
        //            DataGridViewRow rowFound;
                    
        //            if (formActivo is RegistroCliente)
        //            {
        //                rowFound = (from DataGridViewRow dr in gridListObjetos.Rows
        //                            where (dr.Cells["razonSocial"].Value.ToString().StartsWith(txtBuscar.Text))
        //                            select dr).FirstOrDefault();

        //                if (rowFound != null)
        //                {
        //                    rowFound.Selected = true;
        //                    rowFound.DataGridView.FirstDisplayedScrollingRowIndex = rowFound.Index;
        //                    rowFound.DataGridView.PerformLayout();
        //                }  
        //            }

        //            if (formActivo is RegistroVendedor)
        //            {
        //                rowFound = (from DataGridViewRow dr in gridListObjetos.Rows
        //                            where (dr.Cells["nombre"].Value.ToString().StartsWith(txtBuscar.Text))
        //                            select dr).FirstOrDefault();

        //                if (rowFound != null)
        //                {
        //                    rowFound.Selected = true;
        //                    rowFound.DataGridView.FirstDisplayedScrollingRowIndex = rowFound.Index;
        //                    rowFound.DataGridView.PerformLayout();
        //                }
        //            }

        //            if (formActivo is RegistroEquipo)
        //            {
        //                rowFound = (from DataGridViewRow dr in gridListObjetos.Rows
        //                            where (dr.Cells["nombreEquipo"].Value.ToString().StartsWith(txtBuscar.Text))
        //                            select dr).FirstOrDefault();

        //                if (rowFound != null)
        //                {
        //                    rowFound.Selected = true;
        //                    rowFound.DataGridView.FirstDisplayedScrollingRowIndex = rowFound.Index;
        //                    rowFound.DataGridView.PerformLayout();
        //                }
        //            }
        //        }
        //    }
        //}

        private void txtBuscarContains_TextChanged(object sender, EventArgs e)
        {
            if (gridListObjetos.Rows.Count > 0)
            {
                if (!string.IsNullOrWhiteSpace(txtBuscarContains.Text))
                {
                    Form formActivo = this.ParentForm;
                    DataGridViewRow rowFound;

                    if (string.IsNullOrWhiteSpace(columnFiltered))
                    {
                        //si esta vacio entonces automaticamente coge la primera columna
                        foreach (DataGridViewColumn dc in gridListObjetos.Columns)
                        {
                            if (dc.Visible)
                            {
                                columnFiltered = dc.Name;
                                break;
                            }
                        }
                    }

                    rowFound = (from DataGridViewRow dr in gridListObjetos.Rows
                                where dr.Cells[columnFiltered].Value.ToString().Contains(txtBuscarContains.Text)
                                select dr).FirstOrDefault();

                    if (rowFound != null)
                    {
                        rowFound.Selected = true;
                        rowFound.DataGridView.FirstDisplayedScrollingRowIndex = rowFound.Index;
                        rowFound.DataGridView.PerformLayout();
                    }
                }
            }
        }

        private void btnSeleccionarColumna_Click(object sender, EventArgs e)
        {
            Dictionary<string,string> columnasVisibles = new Dictionary<string,string>(); //<columna,nombre de la columna>
            List<string> autocompleteList;

            foreach (DataGridViewColumn dc in gridListObjetos.Columns)
            {
                if (dc.Visible)
                {
                    columnasVisibles.Add(dc.Name, dc.HeaderText);
                }
            }

            ColumnFilter DialogFiltroBusqueda = new ColumnFilter(columnasVisibles);

            if (DialogFiltroBusqueda.ShowDialog() == DialogResult.OK)
            {
                columnFiltered = DialogFiltroBusqueda.NombreColumna;
                autocompleteList = new List<string>();

                foreach (DataGridViewRow dr in gridListObjetos.Rows)
                {
                    autocompleteList.Add(dr.Cells[columnFiltered].Value.ToString());
                }

                txtBuscarContains.AutoCompleteList = autocompleteList;
                txtBuscarContains.ResetText();
            }
        }
    }
}
